import java.util.Scanner;

// 自定义异常类
class InvalidInputException extends Exception {
    public InvalidInputException(String message) {
        super(message);
    }
}

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String name = "";
        int age = 0;

        // 输入并校验姓名
        while (true) {
            try {
                System.out.print("请输入女孩的名字（长度在3-10个字符之间）：");
                name = sc.nextLine();
                validateName(name); // 调用校验方法
                break; // 校验通过，退出循环
            } catch (InvalidInputException e) {
                System.out.println("错误：" + e.getMessage());
            }
        }

        // 输入并校验年龄
        while (true) {
            try {
                System.out.print("请输入女孩的年龄（范围在18-40之间）：");
                String ageInput = sc.nextLine();
                age = Integer.parseInt(ageInput); // 将输入转换为整数
                validateAge(age); // 调用校验方法
                break; // 校验通过，退出循环
            } catch (InvalidInputException e) {
                System.out.println("错误：" + e.getMessage());
            } catch (NumberFormatException e) {
                System.out.println("错误：年龄必须是有效数字，请重新输入。");
            }
        }

        // 输出正确的姓名和年龄
        System.out.println("你喜欢的女孩信息如下：");
        System.out.println("名字：" + name);
        System.out.println("年龄：" + age);

        sc.close();
    }

    // 校验名字是否合法
    public static void validateName(String name) throws InvalidInputException {
        if (name.length() < 3 || name.length() > 10) {
            throw new InvalidInputException("名字长度必须在3到10个字符之间！");
        }
    }

    // 校验年龄是否合法
    public static void validateAge(int age) throws InvalidInputException {
        if (age < 18 || age > 40) {
            throw new InvalidInputException("年龄必须在18到40之间！");
        }
    }
}
